package com.iluwatar;

import java.util.ArrayList;


/**
 * Servant offers some functionality to a group of classes without defining that functionality in each of them. 
 * A Servant is a class whose instance provides methods that take care of a desired service,
 * while objects for which the servant does something, are taken as parameters.
 *
 */
public class App {
	static Servant jenkins = new Servant("Jenkins");
	static Servant travis = new Servant("Travis");
	
	public static void main( String[] args ){
		scenario(jenkins, 1);
		scenario(travis, 0);
	}
	
	/*
	 * Can add a List with enum Actions for variable scenarios
	 * */
	public static void scenario(Servant servant, int compliment){
		King k = new King();
		Queen q = new Queen();
		
		ArrayList<Royalty> guests = new ArrayList<>();
		guests.add(k);
		guests.add(q);
		
		//feed
		servant.feed(k);
		servant.feed(q);
		//serve drinks
		servant.giveWine(k);
		servant.giveWine(q);
		//compliment
		servant.GiveCompliments( guests.get(compliment) );
		
		//outcome of the night
		for(Royalty r : guests)
			r.changeMood();
		
		//check your luck
		if( servant.checkIfYouWillBeHanged(guests) )
			System.out.println(servant.name + " will live another day");
		else
			System.out.println("Poor " + servant.name + ". His days are numbered");
	}
	
	
}
